﻿
Option Strict On
Option Explicit On

Imports System.Data
Imports System.Data.OleDb

''' <summary>
''' Clase que conecta con la base de datos
''' </summary>
''' <author>David Martínez</author>
Public Class BBDD

    Private _strConexion As String
    Private _conexionConBD As OleDbConnection

    'Constructor por defecto
    Public Sub New()

        _strConexion = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb"
        _conexionConBD = New OleDbConnection(_strConexion)
    End Sub

    'Destructor Dispose
    Public Sub Dispose()

        _strConexion = ""
        _conexionConBD = Nothing
    End Sub

    'Destructor Finalize
    Protected Overrides Sub Finalize()

        _strConexion = ""
        _conexionConBD = Nothing
    End Sub

    ' Conecta con la bbdd
    Public Sub Conectar()

        If Not _conexionConBD.State = ConnectionState.Open Then

            _conexionConBD.Open()
        End If
    End Sub


    'Desconecta la bbdd
    Public Sub Desconectar()

        If Not _conexionConBD.State = ConnectionState.Closed Then

            _conexionConBD.Close()
        End If
    End Sub

    ' Inserta un usuario en la base de datos
    Public Function InsertarUsuario(ByVal miUsuario As Usuario) As Boolean

        Dim insertado As Boolean
        Dim command As OleDbCommand

        Try

            command = New OleDbCommand()
            command.Connection = _conexionConBD

            command.CommandText = "INSERT INTO empleado (dni, nombre, apellidos, telefono, direccion) VALUES (?,?,?,?,?)"

            ' Descripción parámetros
            command.Parameters.Add("dni", OleDbType.VarChar, 9)
            command.Parameters.Add("nombre", OleDbType.VarChar, 50)
            command.Parameters.Add("apellidos", OleDbType.VarChar, 100)
            command.Parameters.Add("telefono", OleDbType.VarChar, 9)
            command.Parameters.Add("direccion", OleDbType.VarChar, 200)

            'Definición Parámetros
            command.Parameters(0).Value = miUsuario.DNI
            command.Parameters(1).Value = miUsuario.Nombre
            command.Parameters(2).Value = miUsuario.Apellidos
            command.Parameters(3).Value = miUsuario.Telefono
            command.Parameters(4).Value = miUsuario.Direccion

            'Lanza insert
            command.Prepare()
            command.ExecuteNonQuery()
            insertado = True

        Catch ex As Exception
            insertado = False
        End Try

        Return insertado
    End Function



    ' Inserta una Alarma en la bbdd
    Public Function InsertarCita(ByVal miCita As Cita) As Boolean

        Dim insertado As Boolean
        Dim command As OleDbCommand

        Try

            command = New OleDbCommand()
            command.Connection = _conexionConBD

            command.CommandText = "INSERT INTO cita (cod_cliente,cod_empleado,fecha) VALUES (?,?,?)"

            ' Descripción parámetros
            command.Parameters.Add("cod_cliente", OleDbType.Integer)
            command.Parameters.Add("cod_empleado", OleDbType.Integer)
            command.Parameters.Add("fecha", OleDbType.Date)

            'Definición Parámetros
            command.Parameters(0).Value = miCita.codigocliente
            command.Parameters(1).Value = miCita.CodigoUsuario
            command.Parameters(2).Value = miCita.fecha

            'Lanza insert
            command.Prepare()
            command.ExecuteNonQuery()
            insertado = True

        Catch ex As Exception
            insertado = False
        End Try

        Return insertado
    End Function


    ' Inserta un cliente en la bbdd
    Public Function InsertarCliente(ByVal miCliente As Cliente) As Boolean

        Dim insertado As Boolean
        Dim command As OleDbCommand

        Try

            command = New OleDbCommand()
            command.Connection = _conexionConBD

            command.CommandText = "INSERT INTO cliente (dni,nombre,apellidos,telefono,email,cuentaPendiente) VALUES (?,?,?,?,?,0)"

            ' Descripción parámetros
            command.Parameters.Add("dni", OleDbType.VarChar, 9)
            command.Parameters.Add("nombre", OleDbType.VarChar, 50)
            command.Parameters.Add("apellidos", OleDbType.VarChar, 100)
            command.Parameters.Add("telefono", OleDbType.VarChar, 9)
            command.Parameters.Add("email", OleDbType.VarChar, 255)

            'Definición Parámetros
            command.Parameters(0).Value = miCliente.DNI
            command.Parameters(1).Value = miCliente.Nombre
            command.Parameters(2).Value = miCliente.Apellidos
            command.Parameters(3).Value = miCliente.Telefono
            command.Parameters(4).Value = miCliente.Email

            'Lanza insert
            command.Prepare()
            command.ExecuteNonQuery()
            insertado = True

        Catch ex As Exception
            insertado = False
        End Try

        Return insertado
    End Function



    ' Inserta un concepto en la bbdd
    Public Function InsertarConcepto(ByVal miConcepto As Concepto) As Boolean

        Dim insertado As Boolean
        Dim command As OleDbCommand

        Try

            command = New OleDbCommand()
            command.Connection = _conexionConBD

            command.CommandText = "INSERT INTO concepto (cod_servicio, cod_cita) VALUES (?,?)"

            ' Descripción parámetros
            command.Parameters.Add("cod_servicio", OleDbType.Integer)
            command.Parameters.Add("cod_cita", OleDbType.Integer)

            'Definición Parámetros
            command.Parameters(0).Value = miConcepto.codigoservicio
            command.Parameters(1).Value = miConcepto.codigocita

            'Lanza insert
            command.Prepare()
            command.ExecuteNonQuery()
            insertado = True

        Catch ex As Exception
            insertado = False
        End Try

        Return insertado
    End Function


    ' Inserta una factura en la bbdd
    Public Function InsertarFactura(ByVal miFactura As Factura) As Boolean

        Dim insertado As Boolean
        Dim command As OleDbCommand

        Try
            command = New OleDbCommand()
            command.Connection = _conexionConBD

            command.CommandText = "INSERT INTO factura (cod_cita, cobro,descuento) VALUES (?,?,?)"

            ' Descripción parámetros
            command.Parameters.Add("cod_cita", OleDbType.Integer)
            command.Parameters.Add("cobro", OleDbType.Single)
            command.Parameters.Add("descuento", OleDbType.Single)

            'Definición Parámetros
            command.Parameters(0).Value = miFactura.codigocita
            command.Parameters(1).Value = miFactura.cobro
            command.Parameters(2).Value = miFactura.descuento

            'Lanza insert
            command.Prepare()
            command.ExecuteNonQuery()
            insertado = True

        Catch ex As Exception
            insertado = False
        End Try

        Return insertado
    End Function


    ' Inserta un servicio en la bbdd
    Public Function InsertarServicio(ByVal miServicio As Servicio) As Boolean

        Dim insertado As Boolean
        Dim command As OleDbCommand

        Try

            command = New OleDbCommand()
            command.Connection = _conexionConBD

            command.CommandText = "INSERT INTO servicios (nombre, precio, descripcion) VALUES (?,?,?)"

            ' Descripción parámetros
            command.Parameters.Add("nombre", OleDbType.VarChar, 50)
            command.Parameters.Add("cobro", OleDbType.Single)
            command.Parameters.Add("descripcion", OleDbType.VarChar, 200)

            'Definición Parámetros
            command.Parameters(0).Value = miServicio.Nombre
            command.Parameters(1).Value = miServicio.Precio
            command.Parameters(2).Value = miServicio.Descripcion

            'Lanza insert
            command.Prepare()
            command.ExecuteNonQuery()
            insertado = True

        Catch ex As Exception
            insertado = False
        End Try

        Return insertado
    End Function



    ' Login
    Public Function Login(ByRef user As Usuario) As Boolean

        Dim logeado As Boolean
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        logeado = False

        Try
            comando = New OleDbCommand("select * from empleado where dni = ? and pass = ?", _conexionConBD)

            comando.Parameters.Add("0", OleDbType.VarChar, 9)
            comando.Parameters.Add("1", OleDbType.VarChar, 255)
            comando.Parameters(0).Value = user.DNI
            comando.Parameters(1).Value = user.Password

            lector = comando.ExecuteReader

            If lector.Read() Then

                user.Codigo = CInt(lector("cod"))
                user.Nombre = CStr(lector("nombre"))
                user.Apellidos = CStr(lector("apellidos"))
                user.Telefono = CStr(lector("telefono"))
                user.Direccion = CStr(lector("direccion"))
                logeado = True
            End If

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try

        Return logeado
    End Function


    ' Busca un elemento en la base de datos, si hay más de uno devuelve el primero
    Public Function DevuelveCita(ByVal sentencia As String) As Cita

        Dim miCita As Cita
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miCita = New Cita()

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            If lector.Read() Then

                miCita.codigo = CInt(lector("cod"))
                miCita.codigocliente = CInt(lector("cod_cliente"))
                miCita.CodigoUsuario = CInt(lector("cod_empleado"))
                If Not TypeOf lector("recordatorio") Is DBNull Then
                    miCita.Recordatorio = CStr(lector("recordatorio"))
                End If
                miCita.Fecha = CType((lector("fecha")), DateTime)
            End If

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miCita
    End Function


    ' Busca un elemento en la base de datos, si hay más de uno devuelve el primero
    Public Function DevuelveCliente(ByVal sentencia As String) As Cliente

        Dim miCliente As Cliente
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miCliente = New Cliente()

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            If lector.Read() Then

                miCliente.Codigo = CInt(lector("cod"))
                miCliente.DNI = CStr(lector("dni"))
                miCliente.Nombre = CStr(lector("nombre"))
                miCliente.Apellidos = CStr(lector("apellidos"))
                miCliente.Telefono = CStr(lector("telefono"))
                miCliente.email = CStr(lector("email"))
                miCliente.CuentaPendiente = CSng(lector("cuentaPendiente"))

            End If

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miCliente
    End Function


    ' Busca un elemento en la base de datos, si hay más de uno devuelve el primero
    Public Function DevuelveUsuario(ByVal sentencia As String) As Usuario

        Dim miUsuario As Usuario
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miUsuario = New Usuario()

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            If lector.Read() Then

                miUsuario.Codigo = CInt(lector("cod"))
                miUsuario.DNI = CStr(lector("dni"))
                miUsuario.Nombre = CStr(lector("nombre"))
                miUsuario.Apellidos = CStr(lector("apellidos"))
                miUsuario.Telefono = CStr(lector("telefono"))
                miUsuario.Direccion = CStr(lector("direccion"))

            End If

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miUsuario
    End Function


    ' Busca un elemento en la base de datos, si hay más de uno devuelve el primero
    Public Function DevuelveFactura(ByVal sentencia As String) As Factura

        Dim miFactura As Factura
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miFactura = New Factura()

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            If lector.Read() Then

                miFactura.Codigo = CInt(lector("cod"))
                miFactura.codigocita = CInt(lector("cod_cita"))
                miFactura.cobro = CSng(lector("cobro"))
                miFactura.descuento = CSng(lector("descuento"))
                miFactura.Fecha = CType((lector("fecha")), DateTime)

            End If

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miFactura
    End Function



    ' Busca un elemento en la base de datos, si hay más de uno devuelve el primero
    Public Function DevuelveServicio(ByVal sentencia As String) As Servicio

        Dim miServicio As Servicio
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miServicio = New Servicio()

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            If lector.Read() Then

                miServicio.cod = CInt(lector("cod"))
                miServicio.nombre = CStr(lector("nombre"))
                miServicio.Precio = CSng(lector("precio"))
                miServicio.descripcion = CStr(lector("descripcion"))

            End If

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miServicio
    End Function


    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function ListaServicios(ByVal sentencia As String) As List(Of Servicio)

        Dim miLista As List(Of Servicio)
        Dim miServicio As Servicio
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Servicio)

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miServicio = New Servicio()
                miServicio.Cod = CInt(lector("cod"))
                miServicio.Nombre = CStr(lector("nombre"))
                miServicio.Precio = CSng(lector("precio"))
                miServicio.Descripcion = CStr(lector("descripcion"))

                miLista.Add(miServicio)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function ListaConceptos(ByVal sentencia As String) As List(Of Concepto)

        Dim miLista As List(Of Concepto)
        Dim miConcepto As Concepto
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Concepto)

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miConcepto = New Concepto()
                miConcepto.CodigoCita = CInt(lector("cod_cita"))
                miConcepto.CodigoServicio = CInt(lector("cod_servicio"))

                miLista.Add(miConcepto)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function ListaFacturas(ByVal sentencia As String) As List(Of Factura)

        Dim miLista As List(Of Factura)
        Dim miFactura As Factura
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Factura)

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miFactura = New Factura
                miFactura.Codigo = CInt(lector("cod"))
                miFactura.CodigoCita = CInt(lector("cod_cita"))
                miFactura.Fecha = CDate(lector("fecha"))
                miFactura.Cobro = CSng(lector("cobro"))
                miFactura.Descuento = CSng(lector("descuento"))

                miLista.Add(miFactura)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function ListaUsuarios(ByVal sentencia As String) As List(Of Usuario)

        Dim miLista As List(Of Usuario)
        Dim miUsuario As Usuario
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Usuario)

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miUsuario = New Usuario()
                miUsuario.Codigo = CInt(lector("cod"))
                miUsuario.DNI = CStr(lector("dni"))
                miUsuario.Nombre = CStr(lector("nombre"))
                miUsuario.Apellidos = CStr(lector("apellidos"))
                miUsuario.Telefono = CStr(lector("telefono"))
                miUsuario.Direccion = CStr(lector("direccion"))

                miLista.Add(miUsuario)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function ListaClientes(ByVal sentencia As String) As List(Of Cliente)

        Dim miLista As List(Of Cliente)
        Dim miCliente As Cliente
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Cliente)

        Try
            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miCliente = New Cliente()
                miCliente.Codigo = CInt(lector("cod"))
                miCliente.DNI = CStr(lector("dni"))
                miCliente.Nombre = CStr(lector("nombre"))
                miCliente.Apellidos = CStr(lector("apellidos"))
                miCliente.Telefono = CStr(lector("telefono"))
                miCliente.Email = CStr(lector("email"))
                miCliente.CuentaPendiente = CSng(lector("cuentaPendiente"))

                miLista.Add(miCliente)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function ListaCitas(ByVal sentencia As String) As List(Of Cita)

        Dim miLista As List(Of Cita)
        Dim miCita As Cita
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Cita)

        Try

            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miCita = New Cita()
                miCita.Codigo = CInt(lector("cod"))
                miCita.CodigoCliente = CInt(lector("cod_cliente"))
                miCita.CodigoUsuario = CInt(lector("cod_empleado"))
                If Not TypeOf lector("recordatorio") Is DBNull Then
                    miCita.Recordatorio = CStr(lector("recordatorio"))
                End If
                miCita.Fecha = CType((lector("fecha")), DateTime)

                miLista.Add(miCita)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try

        Return miLista
    End Function

    'Filtra usuarios y que contengan en cualquier campo el valor establecido y devuelve una lista
    Public Function ListaUsuarios(ByVal sentencia As String, ByVal campoBuscar As String) As List(Of Usuario)

        Dim miLista As List(Of Usuario)
        Dim miUsuario As Usuario
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Usuario)

        Try

            comando = New OleDbCommand(sentencia, _conexionConBD)
            comando.Parameters.Add("0", OleDbType.VarChar, 50)
            comando.Parameters.Add("1", OleDbType.VarChar, 50)
            comando.Parameters(0).Value = "%" & campoBuscar & "%"
            comando.Parameters(1).Value = "%" & campoBuscar & "%"
            comando.Prepare()

            lector = comando.ExecuteReader

            While lector.Read()

                miUsuario = New Usuario()
                miUsuario.Codigo = CInt(lector("cod"))
                miUsuario.DNI = CStr(lector("dni"))
                miUsuario.Nombre = CStr(lector("nombre"))
                miUsuario.Apellidos = CStr(lector("apellidos"))
                miUsuario.Telefono = CStr(lector("telefono"))
                miUsuario.Direccion = CStr(lector("direccion"))
                miUsuario.Password = CStr(lector("pass"))

                miLista.Add(miUsuario)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    'Filtra usuarios y que contengan en cualquier campo el valor establecido y devuelve una lista
    Public Function ListaClientes(ByVal sentencia As String, ByVal campoBuscar As String) As List(Of Cliente)

        Dim miLista As List(Of Cliente)
        Dim miCliente As Cliente
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of Cliente)

        Try

            comando = New OleDbCommand(sentencia, _conexionConBD)
            comando.Parameters.Add("0", OleDbType.VarChar, 50)
            comando.Parameters.Add("1", OleDbType.VarChar, 50)
            comando.Parameters(0).Value = "%" & campoBuscar & "%"
            comando.Parameters(1).Value = "%" & campoBuscar & "%"

            comando.Prepare()
            lector = comando.ExecuteReader

            While lector.Read()

                miCliente = New Cliente()
                miCliente.Codigo = CInt(lector("cod"))
                miCliente.DNI = CStr(lector("dni"))
                miCliente.Nombre = CStr(lector("nombre"))
                miCliente.Apellidos = CStr(lector("apellidos"))
                miCliente.Telefono = CStr(lector("telefono"))
                miCliente.Email = CStr(lector("email"))
                miCliente.CuentaPendiente = CSng(lector("cuentaPendiente"))


                miLista.Add(miCliente)
            End While

            lector.Close()
        Catch ex As Exception

            MsgBox("Error con la base de datos: " & ex.Message)
        End Try


        Return miLista
    End Function

    Public Function ModificaUsuario(ByVal usuarioModificar As Usuario) As Boolean
        Dim comando As OleDbCommand

        comando = New OleDbCommand("update empleado set dni = ?, pass = ?, nombre = ?, apellidos = ?, telefono = ?, direccion = ? where cod = ?", _conexionConBD)
        comando.Parameters.Add("0", OleDbType.VarChar, 9)
        comando.Parameters.Add("1", OleDbType.VarChar, 50)
        comando.Parameters.Add("2", OleDbType.VarChar, 50)
        comando.Parameters.Add("3", OleDbType.VarChar, 50)
        comando.Parameters.Add("4", OleDbType.VarChar, 9)
        comando.Parameters.Add("5", OleDbType.VarChar, 255)
        comando.Parameters.Add("6", OleDbType.Integer, 10)

        comando.Parameters(0).Value = usuarioModificar.DNI
        comando.Parameters(1).Value = usuarioModificar.Password
        comando.Parameters(2).Value = usuarioModificar.Nombre
        comando.Parameters(3).Value = usuarioModificar.Apellidos
        comando.Parameters(4).Value = usuarioModificar.Telefono
        comando.Parameters(5).Value = usuarioModificar.Direccion
        comando.Parameters(6).Value = usuarioModificar.Codigo

        Try
            comando.ExecuteNonQuery()
            ModificaUsuario = True
        Catch ex As Exception
            ModificaUsuario = False
        End Try

    End Function


    Public Function ModificaCita(ByVal citaModificar As Cita) As Boolean
        Dim comando As OleDbCommand

        comando = New OleDbCommand("update cita set cod_cliente = ?, cod_empleado = ?, recordatorio = ?, fecha = ? where cod = ?", _conexionConBD)
        comando.Parameters.Add("0", OleDbType.Integer)
        comando.Parameters.Add("1", OleDbType.Integer)
        comando.Parameters.Add("2", OleDbType.LongVarChar)
        comando.Parameters.Add("3", OleDbType.Date)
        comando.Parameters.Add("4", OleDbType.Integer)

        comando.Parameters(0).Value = citaModificar.CodigoCliente
        comando.Parameters(1).Value = citaModificar.CodigoUsuario
        comando.Parameters(2).Value = citaModificar.Recordatorio
        comando.Parameters(3).Value = citaModificar.Fecha
        comando.Parameters(4).Value = citaModificar.Codigo

        Try
            comando.ExecuteNonQuery()
            ModificaCita = True
        Catch ex As Exception
            ModificaCita = False
        End Try

    End Function


    Public Function ModificaCliente(ByVal clienteModificar As Cliente) As Boolean
        Dim comando As OleDbCommand

        comando = New OleDbCommand("update cliente set dni = ?, nombre = ?, apellidos = ?, telefono = ?, email = ? where cod = ?", _conexionConBD)
        comando.Parameters.Add("0", OleDbType.VarChar, 9)
        comando.Parameters.Add("1", OleDbType.VarChar, 50)
        comando.Parameters.Add("2", OleDbType.VarChar, 50)
        comando.Parameters.Add("3", OleDbType.VarChar, 9)
        comando.Parameters.Add("4", OleDbType.VarChar, 100)
        comando.Parameters.Add("5", OleDbType.Integer, 10)

        comando.Parameters(0).Value = clienteModificar.DNI
        comando.Parameters(1).Value = clienteModificar.Nombre
        comando.Parameters(2).Value = clienteModificar.Apellidos
        comando.Parameters(3).Value = clienteModificar.Telefono
        comando.Parameters(4).Value = clienteModificar.Email
        comando.Parameters(5).Value = clienteModificar.Codigo

        Try
            comando.ExecuteNonQuery()
            ModificaCliente = True
        Catch ex As Exception
            ModificaCliente = False
        End Try

    End Function

    'Devuelve una lista con todos los datos obtenidos en la select
    Public Function VistaCitas(ByVal sentencia As String) As List(Of String())

        Dim miLista As List(Of String())
        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader

        miLista = New List(Of String())

        Try

            comando = New OleDbCommand(sentencia, _conexionConBD)
            lector = comando.ExecuteReader

            While lector.Read()

                miLista.Add(New String() {CStr(lector("hora")), _
                                CStr(lector("trabajador")), CStr(lector("cliente"))})

            End While

            lector.Close()

        Catch ex As Exception
            MsgBox("Error con la base de datos: " & ex.Message)
        End Try
        Return miLista
    End Function

    'Para borrar usuarios de la BBDD
    Public Function BorraUsuario(ByVal codigoBorrar As Integer) As Boolean
        Dim comando As OleDbCommand

        comando = New OleDbCommand("delete * from empleado where cod = ?", _conexionConBD)

        comando.Parameters.Add("0", OleDbType.Integer, 5)
        comando.Parameters(0).Value = codigoBorrar

        Try
            comando.ExecuteNonQuery()
            BorraUsuario = True
        Catch ex As Exception
            BorraUsuario = False
        End Try
    End Function

    'Para borrar citas de la BBDD
    Public Function BorraCita(ByVal codigoBorrar As Integer) As Boolean
        Dim comando As OleDbCommand

        comando = New OleDbCommand("delete * from cita where cod = ?", _conexionConBD)

        comando.Parameters.Add("0", OleDbType.Integer, 5)
        comando.Parameters(0).Value = codigoBorrar

        Try
            comando.ExecuteNonQuery()
            BorraCita = True
        Catch ex As Exception
            BorraCita = False
        End Try
    End Function


    Public Function ExisteCita(cita As Cita) As Boolean
        Dim existe As Boolean

        Dim comando As OleDbCommand
        Dim lector As OleDbDataReader


        Try
            comando = New OleDbCommand("Select * from cita where cod_empleado = " & cita.CodigoUsuario & " and " & _
                                       "cod_cliente = " & cita.CodigoCliente & " and fecha = #" & _
                                        cita.Fecha.ToString("dd/MM/yyyy HH:mm:ss") & "#", _conexionConBD)
            lector = comando.ExecuteReader

            If lector.Read() Then
                existe = True
            End If

            lector.Close()
        Catch ex As Exception

            existe = False
        End Try


        Return existe
    End Function

    'Para borrar usuarios de la BBDD
    Public Function BorraCliente(ByVal codigoBorrar As Integer) As Boolean
        Dim comando As OleDbCommand

        comando = New OleDbCommand("delete * from cliente where cod = ?", _conexionConBD)

        comando.Parameters.Add("0", OleDbType.Integer, 5)
        comando.Parameters(0).Value = codigoBorrar

        Try
            comando.ExecuteNonQuery()
            BorraCliente = True
        Catch ex As Exception
            BorraCliente = False
        End Try
    End Function

End Class

